package com.zyh.scs.admin.api.bo;

import lombok.Data;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Data
public class JdQueryOrderR {
    // 成功标记
    private Boolean success;
    // 错误描述
    private String resultMessage;
    // 错误码
    private String resultCode;
    // 返回对象
    private OrderResult result;

    @Setter
    @Getter
    public static class OrderResult {
        // 页大小
        private Integer pageSize;
        // 页码
        private Integer pageNo;
        // 总条数
        private Integer total;
        // 页数
        private Integer pageCount;
        // 数据列表
        private List<OrderData> datas;

    }

    @Setter
    @Getter
    public static class OrderData {
        // 订单号
        private Long jdOrderId;
        // 商户账号
        private String pin;
        // 订单金额
        private BigDecimal orderPrice;
        // 商户支付金额
        private BigDecimal payMoney;
        // 运费
        private BigDecimal freight;
        // 订单类型（1 实物订单，2 电子卡订单）
        private Integer orderType;
        // 支付方式 (1 货到付款，2 邮局付款，4 在线支付，5 公司转账，6 银行转账)
        private Integer paymentType;
        // 价格类型（"KA_PRICE","大客价"，"JD_PRICE","京东价"）
        private Integer priceType;
        // 拆单类型 （0 无需拆单，1 父订单，2 子订单）
        private Integer type;
        // 来源类型（1 开放平台，2 大客户平台，3 大宗采购系统）
        private Integer sourceType;
        // 物流状态 （0 刚下单，1 妥投，2 拒收）
        private Integer state;
        // 订单状态 （0 处理中，1 是有效,2 是拆单,3 是取消）
        private Integer orderState;
        // 是否确认下单 （0 暂停，1 确认发货）
        private Integer submitState;
        // 是否预占库存 （0 预占，1 非预占）
        private Integer submitType;
        // 收货人名称
        private String name;
        // 收货人详细地址
        private String address;
        // 收货地邮编
        private String zip;
        // 收货人座机
        private String phone;
        // 收货人手机
        private String mobile;
        // 收货人邮箱
        private String email;
        // 父订单号
        private Long parentId;
        // 备注
        private String remark;
        // 创建时间
        private LocalDateTime created;
        // 出库时间
        private LocalDateTime outTime;
        // 到货时间
        private LocalDateTime arriveTime;
        // 订单完成时间
        private LocalDateTime finishTime;
        // 京东订单状态
        private Integer jdOrderState;
        // 是否开票 0 不开、1 开票
        private Integer invoiceState;
        // 费率
        private Integer serviceRate;
        // 订单确认方状态，1 客户 2 系统（厂直订单手动确认区分标识）
        private Integer confirmedType;
        // 企业号
        private String enterpriseId;
        // 一级地址名称
        private String provinceName;
        // 二级地址名称
        private String cityName;
        // 三级地址名称
        private String countyName;
        // 四级地址名称
        private String townName;
        // 订单积分，按设置积分费率换算后用户支付的积分金额
        private Integer bp;
        // 积分费率-整数模式（>=1）
        private Integer moneyBpRate;
        // 积分费率-小数模式（>=1.00）
        private BigDecimal moneyBpRateDecimal;
        // 终端用户访问及下单 ID
        private String uid;
        // 子订单列表
        private List<OrderData> childOrderList;
        // 商品列表
        private List<Sku> skuList;
        // 扩展字段（非混合支付模式下，改字段为 NULL）
        private ExtInfo extInfo;

    }

    @Setter
    @Getter
    public static class Sku {
        // 商品编号
        private Long skuId;
        // 商品数量
        private Integer num;
        // 商品金额，采购价金额
        private BigDecimal price;
        // 商品名称
        private String name;
        // 商品图片
        private String imgUrl;
        // 商品类别 0 普通 1 附件 2 赠品
        private Integer type;
        // 主商品编号
        private Long oid;
        // 商品积分
        private BigDecimal bp;
        // 积分费率-整数模式（>=1）
        private Integer moneyBpRate;
        // 积分费率-小数模式（>1.00）
        private BigDecimal moneyBpRateDecimal;
        private Integer tax;

    }

    @Setter
    @Getter
    public static class ExtInfo {
        private List<PayDetails> payDetails;
        private VirtualHealthUserInfo virtualHealthUserInfo;
    }

    @Data
    public static class VirtualHealthUserInfo {

    }

    @Setter
    @Getter
    public static class PayDetails {
        // 支付标识：1：表示个人支付，2：表示企业支付
        private Integer flag;
        // 支付金额(单位:元)
        private BigDecimal payMoney;
        // 支付方式：17：微信支付；101：金采支付；4：余额支付
        private Integer paymentType;

    }
}